package com.sun.jdk.stream;

import com.sun.jdk.lambda.domain.Person;

import java.util.stream.Stream;

/**
 * Stream接口的常用方法
 * 
 * 如果要去掉重复数据，可以使用distinct方法.
 * Stream流中的distinct方法对于基本数据类型是可以直接出重的，但是对于自定义类型，我们是需要
 * 重写hashCode和equals方法来移除重复元素。
 */
public class StreamTest12Distinct {
    public static void main(String[] args) {

        // 8. distinct方法
        Stream.of("10","2","3","1","5","1","3").map(Integer::parseInt)
                .distinct()
                .sorted((o1,o2)->o2-o1) // 传递一个 comparator比较器，按照从大到小排序
                .forEach(System.out::println);

        System.out.println("----------");
        
        Stream.of(
                new Person("张三",14),
                new Person("张三",14),
                new Person("李四",13)
        ).distinct().forEach(System.out::println);
    }
}
